Код организван отдельными болками. Блоки кода можно выполнять в произвольном порядке. Сочетает в себе достоинства полноценных скриптов и интерактивной оболочки. Порядок выполнения блоков указан слева от ячейки.
In [18]:
print(math.sqrt(4))
In [17]:
import math
In [4]:
import numpy as np
np.array([[1,2,3],[4,5,6],[7,8,9]])
Out[4]:
Использование горячих клавиш позволяет очень мильно облегчить и ускорить работу с любой программой, особенно связанной со вводом текста. В плане горячих клавиш очень продвинутым является текстовый редактор vim. В нем существует отдельный режим, мозволяющий пользоваться горячими клавишами. В Jupyter notebook поддерживается та же концепция.
Существуют 2 режима работы: режим ввода и командный режим. Режим ввода отображается зеленой рамкой вокруг активной ячейки, командный режим -- синей. Для того, чтобы переключиться из режима ввода в командный режим необходимо нажать Esc
, переход в режим редактирования осуществляется по нажатию клавиши Enter
.
В командном режиме часто используются следующие горячие клавиши:
b
-- вставить пустую ячейку после текущейa
-- вставить пустую ячейку перед текучейc
-- копировать текущую ячейкуx
-- вырезать ячейкуv
-- вставить ячейку из буфера после текущейdd
-- удалить текущую ячейкуz
-- отменить предыдущее действие (в юпитере не последней версии можно отменить ТОЛЬКО ОДНО действие) m
-- перевести ячейку в режим Markdowny
-- перевести ячейку в режим кодаl
-- отображать номера строкo
-- скрыть/показать вывод текущей ячейкиii
-- остановить выполнение текущей ячейки00
-- перезагрузить ядроs
-- сохранить notebookh
-- Показать справку по горячим клавишамНекоторые сочетания используются в режиме редактирования:
Tab
(в начале строки либо для выделенных строк) -- добавить отступShift+Tab
(в начале строки либо для выделенных строк) -- убрать отступTab
-- автодополнение вводимой командыShift+Tab
-- показать docstring введеннной командыClrl+/
-- закомментировать выделеные строкиShift+Enter
-- выполнить текущую ячейку кода и перейти к следующейCtrl+Enter
-- выполнить текущую ячейку кода и остаться на нейAlt+Enter
-- выполнить текущую ячейку кода и создать новуюТакже Jupytr Notebook имеет большое количество встроенных "магических" функций. С некоторыми познакомимся в этом курсе, про другие стоит рассказать сразу.
Выполнение bat/bash комманд:
In [5]:
!dir
Измерение времени выполнения ячейки кода:
In [22]:
%%time
a = 352e+11
for i in range(10000):
a = math.sin(a)
Время выполнения конкретной строки из блока
In [23]:
%time a = 352e+10
for i in range(1000):
a = math.sin(a)
Замер времени выполнения в цикле
In [24]:
%timeit a = 352e+10
for i in range(1000):
a = math.sin(a)
In [10]:
import matplotlib.pyplot as plt
%matplotlib inline
In [11]:
a = np.linspace(-50, 50, 10000)
b = np.sin(a)/a
plt.figure(figsize=(10,8))
plt.plot(a, b, label=r"$\frac{sin(x)}{x}$")
plt.legend()
plt.title(r'$f(x) = \frac{sin(x)}{x}$')
plt.xlabel('x')
plt.ylabel('f(x)');
In [26]:
from sklearn.datasets import make_classification
X, y = make_classification(n_features=2, n_redundant=0)
plt.figure(figsize=(10,8))
plt.scatter(X[:,0], X[:,1], c=y, marker='+')
plt.title("Classification problem");
In [44]:
lenna = plt.imread("lena.jpg")
plt.figure(figsize=(10,10))
plt.imshow(lenna)
plt.title("image")
plt.figure(figsize=(10,10))
plt.title("histograms")
plt.subplot(2,2,1)
plt.hist((lenna[:,:,0]*0.3+lenna[:,:,2]*0.59+lenna[:,:,2]*0.11).reshape(-1),
bins = 256, color="black")
plt.subplot(2,2,2)
plt.hist(lenna[:,:,0].reshape(-1), color="red", bins = 256)
plt.subplot(2,2,3)
plt.hist(lenna[:,:,1].reshape(-1), color="green", bins = 256)
plt.subplot(2,2,4)
plt.hist(lenna[:,:,2].reshape(-1), color="blue", bins = 256);
In [27]:
from ipywidgets import interactive, widgets
In [28]:
def func(a,b,delta):
plt.figure(figsize=(8,8))
plt.title('Lissajous curves')
t = np.linspace(0,100,10000)
x = np.sin(a*t+delta)
y = np.sin(b*t)
plt.plot(x,y)
plt.show()
interactive(func,a=(0., 3., .01), b=(0., 3., .01), delta=(0., np.pi, .01))
In [ ]: